<?php

class ThumbUtil{
	/**
	 * 图片缩放
	 * @param  string  $file_path  图片路径
	 * @return string  0:文件不存 1:非图片    否者返回文件类型                                
	 */
	static function getImgType($file_path){
        $type_list = array("1"=>"gif","2"=>"jpg","3"=>"png");
        if(file_exists($file_path)) {
            $img_info = @getimagesize ($file_path);
            if(isset($type_list[$img_info[2]])){
                return $type_list[$img_info[2]];
            }else{
            	return '1';//非图片
            }
        }else{
        	return '0';//文件不存在,不能取得文件类型
        }
    }
    
     /**
     * 图片缩放
     * @param  integer  $width     图片缩放后的宽度，当缺少第二个参数时，此参数将用作百分比，
     * @param  integer  $height    图片缩放后的高度
     * @param  integer  $type      缩放类型  1:固定大小，宽或高不足时执行裁剪，先按中间获取最大比例一直的矩形在缩放
     *                                    2:固定宽度
     */
    static function zoomImg($src_img,$width,$height=null,$type=1){
        if(1 == $type){
        	$src_width = imagesx($src_img);
        	$src_height = imagesy($src_img);
        	if($src_width <= $width || $src_height <= $height){
        		//执行裁剪
        		$x=0;
        		$y=0;
        		if($src_width <= $width  && $src_height > $height){
        			$y = ($src_height-$height)/2;
        			return ThumbUtil::cutImg($src_img,$src_width,$height,$x,$y);
        		}else if($src_width > $width  && $src_height <= $height){
        			$x = ($src_width-$width)/2;
        			return ThumbUtil::cutImg($src_img,$width,$src_height,$x,$y);
        		}else{
        			return $src_img;
        		}
        	}else{
        		$x=0;
        		$y=0;
        		if(($src_width*$height)>($src_height*$width)){
        			//当宽度过长时
        			$x = ($src_width -  $src_height*($width/$height))/2;
        			$src_width = $src_height*($width/$height);
        		
        		}else if(($src_width*$height)<($src_height*$width)){
        			//当高度过长时
        			$y = ($src_height -  $src_width*($height/$width))/2;
        			$src_height = $src_width*($height/$width);
        		}
        		$new_img=imagecreatetruecolor($width,$height);
        		imagecopyresampled ($new_img,$src_img,0,0,$x,$y,$width,$height,$src_width,$src_height);
        		return $new_img;
        	}
        }
        
        if(2 == $type){
        	if($src_width == $width){
        		return $src_img;
        	}
        	$src_width = imagesx($src_img);
        	$src_height = imagesy($src_img);
        	$height = $src_height*($width/$src_width);
        	$new_img=imagecreatetruecolor($width,$height);
        	imagecopyresampled ($new_img,$src_img,0,0,0,0,$width,$height,$src_width,$src_height);
        	return $new_img;
        }
    }
    
    /**
     * 图片裁剪
     * @param  integer  $h_img    图片句柄
     * @param  integer  $width    新宽度
     * @param  integer  $height   新高度
     * @param  integer  $start_x  起始x坐标
     * @param  integer  $start_y  起始y坐标
     */
    static  function cutImg($h_img,$width,$height,$start_x=0,$start_y=0){
    	$new_img=imagecreatetruecolor($width,$height);
    	imagecopy($new_img,$h_img,0,0,$start_x, $start_y,$width,$height);
    	return $new_img;
    }
    
    /** 保存图片 
     * @param $img          图片句柄
     * @param $tpath        保存路径
     * @param $typename     图片类型名
     */
    static function saveImg($img,$tpath,$typename){
    	if($typename == 'jpg'){
    		imagejpeg($img,$tpath);
    	}
    	if($typename == 'gif'){
    		imagegif($img,$tpath);
    	}
    	if($typename == 'png'){
    		imagepng($img,$tpath);
    	}
    }
    
    /** 获取图片句柄
     * @param  $path          图片路径
     */
    static function getImg($path){
    	$typename = substr($path, strrpos($path, ".")+1, strlen($path)-strrpos($path, "."));
    	if($typename == 'jpg'){
    		return imagecreatefromjpeg($path);
    	}
    	if($typename == 'gif'){
    		return imagecreatefromgif($path);
    	}
    	if($typename == 'png'){
    		return imagecreatefrompng($path);
    	}
    }
    
    /** 获取图片文件后缀名
     * @param  $path          图片路径
     */
    static function getSuffix($path){
    	return substr($path, strrpos($path, ".")+1, strlen($path)-strrpos($path, "."));
    }
    /** 销毁
     * @param  $img          图片句柄
     */
    static function close($img){
    	imagedestroy($img);
    }
    
    
    
}
?>